前端实现在线预览word(docx),pdf,excel类型的文件

您所在的位置:网站首页 在线预览word excel 前端实现在线预览word(docx),pdf,excel类型的文件

前端实现在线预览word(docx),pdf,excel类型的文件

2024-07-10 19:06:59| 来源: 网络整理| 查看: 265

实现方案

找了网上的实现方案,效果看起来不错,放在下面的表格里,里面有一些是可以直接通过npm在vue中引入使用。

文档格式老的开源组件替代开源组件word(docx)mammothdocx-preview(npm)powerpoint(pptx)pptxjspptxjs改造开发excel(xlsx)sheetjs、handsontableexceljs(npm)、handsontable(npm)pdf(pdf)pdfjspdfjs-dist(npm) docx文件实现前端预览

代码实现

首先npm i docx-preview (官网连接:https://www.npmjs.com/package/docx-preview) 引入renderAsync方法 将blob数据流传入方法中,渲染word文档 只支持Blob | ArrayBuffer | Uint8Array这三种类型的数据 import { defaultOptions, renderAsync } from "docx-preview"; renderAsync( Blob | ArrayBuffer | Uint8Array, document.getElementById("container"), null,{ className: string = "docx", // 默认和文档样式类的类名/前缀 inWrapper: boolean = true, // 启用围绕文档内容渲染包装器 ignoreWidth: boolean = false, // 禁止页面渲染宽度 ignoreHeight: boolean = false, // 禁止页面渲染高度 ignoreFonts: boolean = false, // 禁止字体渲染 breakPages: boolean = true, // 在分页符上启用分页 ignoreLastRenderedPageBreak: boolean = true,//禁用lastRenderedPageBreak元素的分页 experimental: boolean = false, //启用实验性功能(制表符停止计算) trimXmlDeclaration: boolean = true, //如果为真,xml声明将在解析之前从xml文档中删除 debug: boolean = false, // 启用额外的日志记录 } );

实现效果 在这里插入图片描述

pdf实现前端预览

使用步骤

首先npm i pdfjs-dist设置PDFJS.GlobalWorkerOptions.workerSrc的地址通过PDFJS.getDocument处理pdf数据,返回一个对象pdfDoc通过pdfDoc.getPage单独获取第1页的数据创建一个dom元素,设置元素的画布属性通过page.render方法,将数据渲染到画布上

代码实现

import * as PDFJS from "pdfjs-dist/legacy/build/pdf"; // 设置pdf.worker.js文件的引入地址 PDFJS.GlobalWorkerOptions.workerSrc = require("pdfjs-dist/legacy/build/pdf.worker.entry.js"); // data是一个ArrayBuffer格式,也是一个buffer流的数据 PDFJS.getDocument(data).promise.then(pdfDoc=>{ const numPages = pdfDoc.numPages; // pdf的总页数 // 获取第1页的数据 pdfDoc.getPage(1).then(page =>{ // 设置canvas相关的属性 const canvas = document.getElementById("the_canvas"); const ctx = canvas.getContext("2d"); const dpr = window.devicePixelRatio || 1; const bsr = ctx.webkitBackingStorePixelRatio || ctx.mozBackingStorePixelRatio || ctx.msBackingStorePixelRatio || ctx.oBackingStorePixelRatio || ctx.backingStorePixelRatio || 1; const ratio = dpr / bsr; const viewport = page.getViewport({ scale: 1 }); canvas.width = viewport.width * ratio; canvas.height = viewport.height * ratio; canvas.style.width = viewport.width + "px"; canvas.style.height = viewport.height + "px"; ctx.setTransform(ratio, 0, 0, ratio, 0, 0); const renderContext = { canvasContext: ctx, viewport: viewport, }; // 数据渲染到canvas画布上 page.render(renderContext); }) })

实现效果 在这里插入图片描述 ps:当然服务器也可以穿pdf的在线预览链接,我们通过window.open(’pdf地址‘) 重新打开一个浏览器窗口就能浏览了。

excel实现前端预览

使用步骤

npm install xlsx ,注意要安装0.16.0的版本 //在线预览excel import XLSX from "xlsx"; //我们一般从后台获取文件数据或者本地读取xlsx格式的文件基本都是获取的arraybuffer类型,我们将其转为unit8Array格式的数组,之后xlsx插件会帮我们将其解析。 //最终解析出来的数据格式是一个数组,数组每一项是一个对象,该对象代表之前xlsx每一行数据。对象中的每个属性代表每一列的表头 var upload = function (e) { const reader = new FileReader(); var file = e.target.files[0]; reader.readAsArrayBuffer(file);//将文件对象读取为arraybuffer类型的数据 reader.onload = (event) => { var data = new Uint8Array(event.target.result); var workbook = XLSX.read(data, { type: "array" }); var sheetNames = workbook.SheetNames; // 工作表名称集合 var worksheet = workbook.Sheets[sheetNames[0]]; var excelData = XLSX.utils.sheet_to_json(worksheet); console.log(excelData)//最终解析xlsx格式的文件得出来的数据 }; };

实现效果 在这里插入图片描述

pptx的前端预览

主要是通过jszip库,加载二进制文件,再经过一些列处理处理转换实现预览效果,实现起来比较麻烦,就不贴代码了,感兴趣的可以下载代码查看。

实现效果 在这里插入图片描述 代码地址:https://github.com/zhuye1993/file-view 作者:竹业 https://juejin.cn/post/7071598747519549454



【本文地址】

公司简介

联系我们

今日新闻


点击排行

实验室常用的仪器、试剂和
说到实验室常用到的东西,主要就分为仪器、试剂和耗
不用再找了,全球10大实验
01、赛默飞世尔科技(热电)Thermo Fisher Scientif
三代水柜的量产巅峰T-72坦
作者:寞寒最近,西边闹腾挺大,本来小寞以为忙完这
通风柜跟实验室通风系统有
说到通风柜跟实验室通风,不少人都纠结二者到底是不
集消毒杀菌、烘干收纳为一
厨房是家里细菌较多的地方,潮湿的环境、没有完全密
实验室设备之全钢实验台如
全钢实验台是实验室家具中较为重要的家具之一,很多

推荐新闻


图片新闻

实验室药品柜的特性有哪些
实验室药品柜是实验室家具的重要组成部分之一,主要
小学科学实验中有哪些教学
计算机 计算器 一般 打孔器 打气筒 仪器车 显微镜
实验室各种仪器原理动图讲
1.紫外分光光谱UV分析原理:吸收紫外光能量,引起分
高中化学常见仪器及实验装
1、可加热仪器:2、计量仪器:(1)仪器A的名称:量
微生物操作主要设备和器具
今天盘点一下微生物操作主要设备和器具,别嫌我啰嗦
浅谈通风柜使用基本常识
 众所周知,通风柜功能中最主要的就是排气功能。在

专题文章

    CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭